//
//  HMTabBarViewController.swift
//  HMWeiBo
//
//  Created by Apple on 16/7/28.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMTabBarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()


        // 添加4个视图控制器 -- 为什么要再次重载呢?  在控制器的生命周期里,尽量少的代码
        addChildViewController()
        
        // 创建自定义的tabbar,然后把系统的替换掉
        //  public var tabBar: UITabBar { get }  计算型属性--只读的
        
//       tabBar = HMTabBar()
        
        // 运行时: 运行的时候,对象可以动态的调用 setValue forKey 这个方法.来动态给属性赋值
        
        // 手动调用一个 setValue forkey
        let hmbarBar = HMTabBar()
        
        hmbarBar.tintColor = UIColor.orangeColor()
        
        setValue(hmbarBar, forKey: "tabBar")
        
        weak var weakSelf = self
        
         let tiaozhuan =  { [unowned self]  ()->() in
            
//                printLog("回调成功,实现页面跳转")
            
//            let compose = HMComposeView()
//            
//            // 我们可以把控制器以参数的形式,传递过去
//            compose.target = self
//            
//            self.view.addSubview(compose)
            // 如果 把 self传递过去的方式接受不了的话,就不要用这种方式了
            HMComposeView.show(self)
        
            HMComposeView.abc(self)
        }

       
        // self 强引用者 tabbar
         // tabBar 强引用着闭包
        // 闭包强引用着self
        
        
        // 控制器去实现闭包 -- 属性的正向传值
        hmbarBar.closure = tiaozhuan
        
        
        // 调用方法
//        hmbarBar.demo()
        
//        HMTabBar.setupUI()
    }

    /*
        还需要重载 addChildViewController
    */
    
    func addChildViewController(){
    
        addChildViewController(HMHomeViewController(), imageName: "tabbar_home", titleString: "首页")
        addChildViewController(HMMessageViewController(), imageName: "tabbar_message_center", titleString: "消息")
        addChildViewController(HMFindViewController(), imageName: "tabbar_discover", titleString: "发现")
        addChildViewController(HMSettingViewController(), imageName: "tabbar_profile", titleString: "我")
        
    }
    
    /*
        把刚才的代码,重载到 addChildViewController 这个方法里
        重载: 方法名相同,参数个数不同
    */
    
    func addChildViewController(childController: UIViewController,imageName:String,titleString: String) {
    
        let item = HMTabBarItem()
        
        childController.tabBarItem = item
        
    
        // 设置一下图片
        childController.tabBarItem.image = UIImage(named: imageName)
        // 设置选中的图片
        childController.tabBarItem.selectedImage = UIImage(named: "\(imageName)_highlighted")
        
        // 设置一下渲染模式
        tabBar.tintColor = UIColor.orangeColor()
        // 这个也可以同样实现
        //        UITabBar.appearance().tintColor = UIColor.orangeColor()
        
        // 设置tabBarItem标题 --
        //        home.tabBarItem.title = "首页"
        
        // 设置nav的标题
        childController.title = titleString
        
        // 把自控制添加到nav
        let nav = UINavigationController(rootViewController: childController)
        // 这样不可以实现
        //        nav.title = "首页"
        
        //添加子控制器
        addChildViewController(nav)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
